public class test26 {
    public int removeDuplicates(int[] nums) {
        int k = 1;
        int m = 1;
        //k为快指针，m为慢指针
        if(nums.length==1){
            return 1;
        }
        while(k<nums.length) {
            if(nums[k]!=nums[k-1]){
                nums[m] = nums[k];
                m++;
//                break;
            }
            k++;
        }
        return m;
    }

    //时间复杂度：O(n)O(n)O(n)，其中 nnn 是数组的长度。快指针和慢指针最多各移动 nnn 次。
    //
    //空间复杂度：O(1)O(1)O(1)。只需要使用常数的额外空间。

    //改进新思路：
//    public int removeDuplicates(int[] nums) {
//    if(nums == null || nums.length == 0) return 0;
//    int p = 0;
//    int q = 1;
//    while(q < nums.length){
//        if(nums[p] != nums[q]){
//            if(q - p > 1){
//                nums[p + 1] = nums[q];
//            }
//            p++;
//        }
//        q++;
//    }
//    return p + 1;
//}
}
